import tkinter as tk
import webbrowser
import requests
from tkinter import messagebox
import random


class VIPVideoApp:
    def __init__(self, root):
        self.root = root
        self.root.title("VIP视频解析工具")
        self.root.geometry("600x350")
        self.root.resizable(False, False)
        self.root.configure(bg="#f0f0f0")

        # 设置应用程序图标（如果有的话）
        # self.root.iconbitmap('icon.ico')  # 取消注释并提供图标文件路径

        # 当前可用的解析接口列表
        self.parse_apis = [
            "https://jx.m3u8.tv/jiexi/?url="
        ]

        self.create_widgets()

    def create_widgets(self):
        # 标题框架
        title_frame = tk.Frame(self.root, bg="#4a86e8", height=60)
        title_frame.pack(fill=tk.X)

        # 标题
        title_label = tk.Label(title_frame, text="VIP视频解析工具",
                               font=("微软雅黑", 18, "bold"), fg="white", bg="#4a86e8")
        title_label.pack(pady=15)

        # 主内容框架
        main_frame = tk.Frame(self.root, bg="#f0f0f0", padx=20, pady=20)
        main_frame.pack(fill=tk.BOTH, expand=True)

        # 视频链接输入区域
        input_frame = tk.LabelFrame(main_frame, text="视频链接输入",
                                    font=("微软雅黑", 10), bg="#f0f0f0", padx=10, pady=10)
        input_frame.pack(fill=tk.X, pady=(0, 15))

        link_label = tk.Label(input_frame, text="视频链接:", font=("微软雅黑", 10), bg="#f0f0f0")
        link_label.grid(row=0, column=0, sticky=tk.W, padx=(0, 10))

        self.link_entry = tk.Entry(input_frame, font=("微软雅黑", 10), width=40)
        self.link_entry.grid(row=0, column=1, padx=(0, 10))

        clear_btn = tk.Button(input_frame, text="清空", command=self.clear_input,
                              font=("微软雅黑", 9), bg="#ff6666", fg="white", width=8)
        clear_btn.grid(row=0, column=2)

        # 平台按钮区域
        platform_frame = tk.LabelFrame(main_frame, text="视频平台",
                                       font=("微软雅黑", 10), bg="#f0f0f0", padx=10, pady=10)
        platform_frame.pack(fill=tk.X, pady=(0, 15))

        # 平台按钮列表
        platforms = [
            ("爱奇艺", self.open_iqiyi, "#19be6b"),
            ("腾讯视频", self.open_tencent, "#2d8cf0"),
            ("优酷", self.open_youku, "#ff9900"),
            ("芒果TV", self.open_mango, "#ed3f14"),
            ("Bilibili", self.open_bilibili, "#fb7299")
        ]

        # 创建平台按钮
        for i, (name, command, color) in enumerate(platforms):
            btn = tk.Button(platform_frame, text=name, command=command,
                            font=("微软雅黑", 10), bg=color, fg="white", width=10, height=1)
            btn.grid(row=0, column=i, padx=5)

        # 解析按钮
        parse_frame = tk.Frame(main_frame, bg="#f0f0f0")
        parse_frame.pack(fill=tk.X, pady=(10, 15))

        parse_btn = tk.Button(parse_frame, text="解析播放", command=self.parse_video,
                              font=("微软雅黑", 12, "bold"), bg="#4a86e8", fg="white",
                              height=2, width=20)
        parse_btn.pack()

        # 状态提示
        status_frame = tk.Frame(main_frame, bg="#f0f0f0")
        status_frame.pack(fill=tk.X)

        self.status_label = tk.Label(status_frame, text="请输入视频链接后点击解析播放",
                                     font=("微软雅黑", 9), fg="gray", bg="#f0f0f0")
        self.status_label.pack()

        # 底部版权信息
        footer_frame = tk.Frame(self.root, bg="#e6e6e6", height=30)
        footer_frame.pack(fill=tk.X, side=tk.BOTTOM)

        copyright_label = tk.Label(footer_frame, text="© 2023 VIP视频解析工具 - 仅供学习交流使用",
                                   font=("微软雅黑", 8), fg="gray", bg="#e6e6e6")
        copyright_label.pack(pady=5)

    def clear_input(self):
        self.link_entry.delete(0, tk.END)
        self.status_label.config(text="已清空输入框", fg="gray")

    def open_iqiyi(self):
        webbrowser.open("https://www.iqiyi.com")
        self.status_label.config(text="已打开爱奇艺官网", fg="blue")

    def open_tencent(self):
        webbrowser.open("https://v.qq.com")
        self.status_label.config(text="已打开腾讯视频官网", fg="blue")

    def open_youku(self):
        webbrowser.open("https://www.youku.com")
        self.status_label.config(text="已打开优酷官网", fg="blue")

    def open_mango(self):
        webbrowser.open("https://www.mgtv.com")
        self.status_label.config(text="已打开芒果TV官网", fg="blue")

    def open_bilibili(self):
        webbrowser.open("https://www.bilibili.com")
        self.status_label.config(text="已打开Bilibili官网", fg="blue")

    def parse_video(self):
        video_url = self.link_entry.get().strip()
        if not video_url:
            messagebox.showwarning("输入错误", "请输入视频链接")
            return

        # 检查链接是否来自支持的平台
        supported_platforms = ['iqiyi.com', 'qq.com', 'youku.com', 'mgtv.com',
                               'sohu.com', 'le.com', 'bilibili.com', 'b23.tv']
        if not any(platform in video_url for platform in supported_platforms):
            if not messagebox.askyesno("提示", "链接可能来自不支持的平台，是否继续尝试解析？"):
                return

        self.status_label.config(text="正在解析中...", fg="orange")
        self.root.update()

        # 随机选择一个解析接口
        api_url = random.choice(self.parse_apis) + video_url

        try:
            # 测试链接是否可用
            response = requests.get(api_url, timeout=10)
            if response.status_code == 200:
                webbrowser.open(api_url)
                self.status_label.config(text="解析成功，正在打开视频...", fg="green")
            else:
                messagebox.showerror("解析失败", "解析接口暂时不可用，请稍后再试或尝试其他视频链接")
                self.status_label.config(text="解析失败，请重试", fg="red")
        except Exception as e:
            messagebox.showerror("错误", f"解析过程中发生错误: {str(e)}")
            self.status_label.config(text="解析错误，请检查网络连接", fg="red")


if __name__ == "__main__":
    root = tk.Tk()
    app = VIPVideoApp(root)
    root.mainloop()